import json

from pyspark import SparkConf, SparkContext
import os
os.environ['PYSPARK_PYTHON'] = "C:/Users/28474/AppData/Local/Programs/Python/Python310/python.exe"

conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)

# TODO 需求1：城市销售额排名
# 1.1 读取文件得到RDD
rdd = sc.textFile("E:/storage/study/Python/python-learn/day01/02-python-learn/13_pyspark/素材/orders.txt")
# 1.2 取出一个个JSON字符串
rdd2 = rdd.flatMap(lambda x: x.split("|"))
# 1.3 将一个个JSON字符串转换为字典
rdd3 = rdd2.map(lambda x: json.loads(x))
# 1.4 取出城市和销售额数据，并按销售额聚合结果进行排序
rdd4 = rdd3.map(lambda x: (x['areaName'], int(x['money']))).reduceByKey(lambda x,y: x+y).sortBy(lambda x: x[1], ascending=False, numPartitions=1)
# TODO 需求2： 全部城市有哪些商品类别在售卖
# 2.1 取出全部商品类别，并对商品类别进行去重
rdd5 = rdd3.map(lambda x: x['category']).distinct()
# TODO 需求3. 郑州有哪些商品类别在售卖
# 3.1 过滤郑州的数据，并取出全部商品类别，并进行商品类别去重
rdd6 = rdd3.filter(lambda x: x['areaName'] == '郑州').map(lambda x: x['category']).distinct()
sc.stop()
